/**
 * 版本比较工具
 */

/**
 * 标准化版本号（补零到3位）
 * @param {string} version 版本号
 * @returns {number[]} 标准化后的版本数组
 */
const normalizeVersion = (version) => {
  return version.split('.').map(Number).concat([0, 0, 0]).slice(0, 3);
};

/**
 * 比较两个版本号
 * @param {string} v1 版本号1
 * @param {string} v2 版本号2
 * @returns {number} 比较结果：1(v1>v2) | -1(v1<v2) | 0(相等)
 */
export const compareVersions = (v1, v2) => {
  const parts1 = normalizeVersion(v1);
  const parts2 = normalizeVersion(v2);

  for (let i = 0; i < 3; i++) {
    if (parts1[i] > parts2[i]) return 1;
    if (parts1[i] < parts2[i]) return -1;
  }
  return 0;
};

/**
 * 检查是否需要更新
 * @param {string} currentVersion 当前版本
 * @param {string} latestVersion 最新版本
 * @returns {boolean} 是否需要更新
 */
export const shouldUpdate = (currentVersion, latestVersion) => {
  return compareVersions(latestVersion, currentVersion) === 1;
};

/**
 * 显示更新对话框
 * @param {string} newVersion 新版本号
 * @param {function} onConfirm 确认回调
 * @param {function} onCancel 取消回调
 */
export const showUpdateDialog = (newVersion, onConfirm, onCancel) => {
  uni.showModal({
    title: '发现新版本',
    content: `新版本 v${newVersion}，是否进行更新？`,
    success: (res) => {
      if (res.confirm && typeof onConfirm === 'function') {
        onConfirm();
      } else if (res.cancel && typeof onCancel === 'function') {
        onCancel();
      }
    }
  });
};